package com.zeta.demo.es.dao;

import com.zeta.demo.es.model.document.PostDocument;
import org.springframework.data.elasticsearch.annotations.Query;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 文章 ElasticSearch Repository
 *
 * @author gcc
 */
@Repository
public interface PostEsRepository extends ElasticsearchRepository<PostDocument, Long> {

    /**
     * 根据标题查询  (分词查询)
     *
     * @param title 标题
     * @return 文章列表
     */
    List<PostDocument> findByTitle(String title);

    /**
     * 根据标题查询  (精确查询)
     *
     * @param keyword 关键字
     * @return 帖子列表
     */
    @Query("""
    {"term": {"title.keyword": "?0"}}
    """)
    List<PostDocument> findByTitleKeyword(String keyword);

    /**
     * 根据标题 (模糊查询)
     *
     * @param keyword 关键字
     * @return 帖子列表
     */
    @Query("""
    {"wildcard": {"title": "?0"}}
    """)
    List<PostDocument> findByTitleLike(String keyword);
}
